Skip to content

UI-first configuration: DB-backed settings with encrypted secrets#8

Merged
akumar-99 merged 2 commits into
mainfrom
feat/db-settings-ui
Jun 11, 2026
Merged

UI-first configuration: DB-backed settings with encrypted secrets#8
akumar-99 merged 2 commits into
mainfrom
feat/db-settings-ui

Conversation

@akumar-99

Copy link
Copy Markdown
Contributor

Summary

  • All app configuration moves from env vars to the database, edited in a new dashboard Settings page (grouped sections, write-only secrets, generate-once machine tokens, first-run checklist)
  • Secrets encrypted at rest (AES-256-GCM, new required SECRET_KEY); service-account key is pasted JSON with ADC fallback
  • Integrations rebuild from settings at use time — changes apply with no restart
  • .env is bootstrap-only now; docs rewritten accordingly

Test plan

  • 97/97 tests on SQLite and PostgreSQL 18 (new: crypto roundtrip/tamper, settings persistence + encryption-at-rest assertions, settings UI save/validation, token generate→enforce)
  • Container smoke: checklist renders, settings save, generated token immediately enforced on /tick
  • Coverage thresholds hold

…s UI

- New settings table (migration 5) + SettingsService: secrets encrypted
  at rest with AES-256-GCM via the new SECRET_KEY env var
- .env shrinks to bootstrap only (port, database, dashboard token,
  secret key, adapter); Chat credentials become paste-in JSON with ADC
  fallback, AI keys / calendar OOO / default timezone / machine tokens
  all move to dashboard Settings and apply without restart
- Verifier, LLM client, Calendar checker and Chat auth resolve from
  settings at use time (SchedulerProviders, lazy chat client)
- Redesigned dashboard: branded chrome, Settings page with grouped
  sections, write-only secrets, generate-once tokens, and a first-run
  setup checklist using the logo's ascending-bars meter
@akumar-99 akumar-99 merged commit 53cdc1c into main Jun 11, 2026
5 checks passed
@akumar-99 akumar-99 deleted the feat/db-settings-ui branch June 11, 2026 03:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant